/**
	License:		Artistic license 2.0 (see license.txt, also available online at http://www.perlfoundation.org/artistic_license_2_0)
	Authors:		OrbitalLab (http://www.orbitallab.ru/moonglide/), 2007-2009

	File:			IRendererMatSys.d
	Description:	material system interface
	Date:			17.01.2008 by Jurec
*/
module moonglide.renderer.IRendererMatSys;

public import
	moonglide.renderer.IRenderer,
	moonglide.renderer.IRendererBind,
	moonglide.core.EngObjects,
	moonglide.core.engobjects.EngGeometry;

//================================================================
/// Material system
//================================================================

// input:
//	- Geometry
//	- other scene info must be in access, so pointer to render system
//
// output:
//	- Right render of geometry, include multipass, optimization of shaders, etc.

abstract class IMaterialSys
{
	protected:
		IRenderer			_renderer;

	public:
		IRendererBind		resBinder;

		bool onlyHdrPass();
        void onlyHdrPass( bool b );

		bool depthPass();
        void depthPass( bool b );

        bool termalPass();
        void termalPass( bool b );

        bool passGeom( CEngGeometry rGeom );
		void renderGeom( CEngGeometry rGeom );
}
